前一天我完成了「目前目標」提示。玩家和村長完成第一次對話後,畫面左上角會顯示下一步目標:前往酒館,詢問受傷的年輕人。
因此 Day 22 的目標,就是開始建立酒館相關內容,讓玩家真的可以進入酒館,並和裡面的受傷年輕人互動。
這一天的重點不是做完整酒館劇情,也不是升級成正式多角色對話系統,而是先完成三件事:
第一,建立酒館室內場景。
第二,讓酒館背景裡的人物可以互動。
第三,設定村莊與酒館之間的進出點位。
一開始要先處理酒館室內背景。原本如果直接使用 Tavern 素材中已經切好的大型室內圖,會遇到一個問題:Day 18 製作村長家時,已經使用過 Tavern_01_2 作為村長家室內原型。如果酒館又繼續使用同一塊素材,村長家和酒館就會看起來像同一間房子,只是換了門牌,這種偷懶太明顯。
所以 Day 22 改成從 Tavern 素材中重新切出兩塊不同的區域:Travern_01_3 和 Travern_01_4,並把它們拼成 TavernInteriorScene 的酒館背景。

這樣做的好處是,酒館和村長家在視覺上有明顯區別。村長家偏向大型室內與集會空間,而酒館則使用另一組區域拼接,讓它更像玩家接下來要調查年輕人的場所。
完成背景後,下一步是處理碰撞。酒館背景本質上仍然是圖片,如果不加碰撞,玩家可以直接穿牆、走進櫃台、踩到桌椅上。
Unity 不會因為畫面上看起來有桌子,就突然理解桌子不是地板。它沒有那麼善解人意,謝天謝地,也謝不了地。
因此我建立了 TavernCollision 分組,針對酒館內的牆面、櫃台、桌椅與走廊邊界補上 BoxCollider2D。

這些碰撞箱讓酒館從單純的背景圖片,變成可以實際探索的室內場景。
這一步完成後,也要避免再執行會重建 TavernCollision 的工具,因為碰撞箱已經手動調整到合適位置。如果後續工具又重新生成,很可能會把已經調好的碰撞覆蓋掉。
接著處理酒館內的背景人物互動。這次酒館背景本身已經有三個人物:
1 號是吧檯的人,對應 BackgroundCharacter_01_Bar,說話者是酒館老闆。
2 號是柱子旁邊的人,對應 BackgroundCharacter_02_Pillar,說話者是阿森。
3 號是下方走廊的人,對應 BackgroundCharacter_03_LowerHall,說話者是洛克。
這些人物已經畫在背景裡,所以不能刪除,也不應該再額外疊新的 NPC Sprite。否則畫面上就會出現背景人物和新 NPC 重疊的怪現象,像酒館裡每個人都有替身,劇情瞬間變得非常不健康。
因此這裡改用透明互動區的做法。
我建立 TavernBackgroundCharacterInteractions,並在三位背景人物附近各建立一個透明 Trigger。這些互動區不顯示圖片,只使用 BoxCollider2D 判定玩家是否靠近。


每個互動區都勾選 Is Trigger,並掛上 NpcDialogueInteraction。
這樣玩家靠近背景人物時,就可以觸發簡單對話,而不需要再新增額外的 NPC 圖像。
目前 NpcDialogueInteraction 仍然是簡易對話系統,每個互動區只有一個 speakerName,因此還不能做到主角與 NPC 逐句交替說話。
也就是說,目前酒館對話會先濃縮成各個 NPC 自己的台詞,例如酒館老闆、阿森、洛克各自說明一部分情況。之後如果要讓主角也逐句回應,就需要在 Day 23 或後續天數升級成多 speaker 對話系統。
接下來回到村莊場景,處理酒館外觀。Day 22 期間有先盤點專案裡可用的外觀素材,確認酒館外觀應該使用 Anokolisa 的建築素材,而不是使用 Buildings/MockUps/Tavern_01.png。
Buildings/MockUps/Tavern_01.png 是酒館內裝示意圖,不適合當作村莊外部建築。
村莊中的酒館外觀應該使用:
Assets/ImportedAssets/Anokolisa_TopdownRPG/Buildings/Roofs.png
Assets/ImportedAssets/Anokolisa_TopdownRPG/Buildings/Walls.png
Assets/ImportedAssets/Anokolisa_TopdownRPG/Buildings/Props.png
或已整理好的 Village_BuildingPalette_16x16.prefab

酒館外觀建立在 VillageScene 中,作為玩家從村莊進入酒館的入口。
這一步讓村莊中的酒館不再只是預留地,而是有了實際建築。後續玩家看到酒館門口,就能理解這裡是 Day 21 目標提示中提到的下一個調查地點。
酒館外觀完成後,下一步是設定村莊通往酒館的轉場。
在 VillageScene 的酒館入口位置建立 Exit_ToTavern,並設定它成為轉場 Trigger。

Exit_ToTavern 需要加上 BoxCollider2D,並勾選 Is Trigger。接著掛上 SceneTransitionPoint,設定:
Target Scene Name = TavernInteriorScene
Target Spawn Point Name = Entry_FromVillage
這代表玩家從村莊走到酒館入口時,會切換到 TavernInteriorScene,並出現在酒館內部的 Entry_FromVillage 位置。
接著進入 TavernInteriorScene,建立酒館內部的進入點。
這一步會建立 TavernMarkers,並在下面放置 Entry_FromVillage。

Entry_FromVillage 是玩家從村莊進入酒館後出現的位置。
如果沒有這個點,玩家可能會出現在場景原點,甚至卡在牆裡或桌子上。Unity 對玩家出生位置沒有判斷,所以這件事只能靠我們自己處理。
把 Entry_FromVillage 放在酒館入口附近,可以讓玩家一進入酒館就站在合理的位置,也方便接下來靠近酒館老闆或受傷年輕人,最後建立酒館離開點 Exit_ToVillage,這個點放在酒館出口附近,讓玩家可以從酒館回到村莊。

Exit_ToVillage 需要加上 BoxCollider2D,並勾選 Is Trigger。
同時掛上 SceneTransitionPoint,設定:
Target Scene Name = VillageScene
Target Spawn Point Name = Entry_FromTavern
這樣玩家走到酒館出口時,場景會切回 VillageScene,並讓玩家出現在村莊中的 Entry_FromTavern,也就是酒館門外的位置。完成以上設定後,Day 22 不需要再新增截圖。
轉場測試屬於動態效果,用靜態圖片很難表達,因此用文字補充即可。
進入 Play Mode 後,玩家可以從村莊酒館入口切換到 TavernInteriorScene,進入後會出現在 Entry_FromVillage。走到酒館出口的 Exit_ToVillage 後,場景會切回 VillageScene,並出現在 Entry_FromTavern。
同時,玩家靠近酒館內三位背景人物時,也能觸發對話。
Day 22 完成後,酒館已經具備基本功能:
有獨立室內背景、有碰撞箱、有背景人物互動區、有村莊外觀、有村莊進入酒館的轉場,也有酒館回村莊的出口。
下一步 Day 23 可以繼續處理酒館對話。由於目前簡易對話系統只能顯示單一說話者,所以如果要讓主角、酒館老闆、阿森、米娜、洛克之間有更自然的來回對話,就需要把對話系統升級成支援多 speaker 的版本。